В качестве данных мне были предоставлены сведения о клиентах банка. Задачами данного отчета были: анализ данных касательно оттока клиентов из банка, а ткаже демонстрация полученных результатов в компактной и понятной форме. В моем представлении отчет должен быть представлен людям, которые не разбираются в сложных графиках и понятиях. Поэтому были созданы максимально простые и читаемые графики. Далее будут представлены разделы, в которых буду описаны сами данные, проведен разведывательный анализ, построены предсказательные модели и предложены варианты уменьшения оттака клиентов.
Всего в данных была собрана информация о 10 000 клиентах из трех стран - Франция, Германия и Испания. 5014 (50.1%) клиентов были из Франции, осташиеся разделилиись примерно поровну - на Германию пришлось 2509 (25.1%) наблюдений и 2477 (24.8%) пришлось на Испанию. Из всех клиентов 2037 (20.4%) были отмечены как те, кто ушел из компании, а осталсь 7963 (79.6%) клиентов. При этом 51.5% клиентов были отмечены в базе как активные, в то время как 4849 (48.5%) клиентов были не активными, и среди “Не активных” процент оттока был, естественно повыше. Средний возраст клиентов - 39 года, минимальный возраст клиента равен 18, а самыми старыми клиентами являются клиенты, которым 92 года. Основная часть клиентов, которые уходили из компании относительно взраста сконцентрировалось в диапазоне от 33 лет до 55. Также, соотношение людей, которые ушли из банка или остались, никак не зависило от наличия или отсутсвия кредитной карты. Важным наблюдением стала связь между количеством продуктов и оттоком клиентов: все клиенты, которые использовали максимальное количество сервисов банка (4), ушли из него, а из тех кто использовал три сервиса, ушло почти 83%. При этом около 30% клиентов ушло из банка среди тех, кто использвал один сервис, в среди тех, кто использовал два продукта банка наблюдается минимальный отток, который составил на данный момент всего лишь 8%. У клиентов, которые остались с банком кредитный скоринг чуть больше, чем у тех, кто ушел из банка. Женщины чуть чаще оставляли банк, по сравнению с мужчинами: 25% женщин ушли из банка, в то время как около 17% мужчин поступили также. Не было найдено разницы в распределении заработной платы между теми, кто ушел из банка и кто остался. Сильная разница также не была обнаружена и относительно того, как долго клиент находится с банком, но процент оттока был чуть выше среди клиентов, которые были с банком меньше месяца или месяцы.
Таким образом, при первичном разведывательном анализе, основными влияющими переменными на решение клиента уйти из банка стали следующие переменные:
Возраст: основной отток приходится на возрастную группу 35-55 лет;
Количество продуктов: клиенты, которые используют одновременно три или четыре сервиса банка склонны чаще из него уходить, чем те кто использует только один или два сервиса;
Активность клиента: среди клиентов, которые регулярно пользуются банковскими услугами отток меньше, чем среди тех, кто считается “не активными”.
Далее будут представлены результаты кластерного анализа.
cntr = dbGetQuery(con, "SELECT Country, Exited, COUNT(*) AS n FROM churn INNER JOIN country ON churn.CountryID = country.CountryID GROUP BY Country, Exited") %>% group_by(Country) %>% mutate(Persentage = round(n/sum(n),2)*100) %>% dplyr::select(-n)
kable(cntr) %>%
kable_styling(bootstrap_options=c("bordered", "responsive","striped"), full_width = FALSE)
| Country | Exited | Persentage |
|---|---|---|
| France | 0 | 84 |
| France | 1 | 16 |
| Germany | 0 | 68 |
| Germany | 1 | 32 |
| Spain | 0 | 83 |
| Spain | 1 | 17 |
gndr = dbGetQuery(con, "SELECT Gender, Exited, COUNT(*) AS n FROM churn GROUP BY Gender, Exited") %>% group_by(Gender) %>% mutate(Persentage = round(n/sum(n),2)*100) %>% dplyr::select(-n)
kable(gndr) %>%
kable_styling(bootstrap_options=c("bordered", "responsive","striped"), full_width = FALSE)
| Gender | Exited | Persentage |
|---|---|---|
| Female | 0 | 75 |
| Female | 1 | 25 |
| Male | 0 | 84 |
| Male | 1 | 16 |
Кластерный анализ был использован для того, чтобы выбрать группу на которую стоит обратить внимание при дальнейшей разработки политики. С помощью кластерного анализа можно изучить группу, в которой риски потреять клиента - высоки. Ананлиз причин оттока и попытка прогнозирования изменения ситуации в положительную сторону, может позволить заранее определять клиентов, находящихся в группе риска и эффективно реагировать на сдвиги в их поведении.
В ходе анализа были учтены как социодемографические переменные, так и переменные, касающиеся финансов клиента, его активности, а также используемое количество сервисов. Основываясь на первичном разведывательном анализе я исключила из данных для кластера переменную, отвечающую за наличие у клиента кредитной карты, а ткаже перменную, отвечающую за отток клиентов. В итоге было использовано 9 переменных, каждая из которых была приведена к стандартизированному виду для чистоты работы кластерного анализа. С помощью метода “Локтя” было выбрано оптимальное число кластеров - 3. Послделения на кластеры в первом находилось 1570 наблюдений, во втором - 4812, в третьем - 3618 наблюдений.
credit_clusters = dbGetQuery(con, "SELECT CreditScore, Gender, Age, Balance, NumOfProducts, IsActiveMember, Country, Exited
FROM churn INNER JOIN country
ON churn.CountryId = country.CountryId")
credit_clusters$Gender = as.numeric(credit_clusters$Gender == "Male")
credit_clusters$Country[credit_clusters$Country == "France"] <- "1"
credit_clusters$Country[credit_clusters$Country == "Germany"] <- "2"
credit_clusters$Country[credit_clusters$Country == "Spain"] <- "3"
credit_clusters$Country = as.numeric(credit_clusters$Country)
credit_clusters_scale <- credit_clusters %>% mutate_if(is.numeric, scale) %>% dplyr::select(-Exited)
# set.seed(1234)
# # Use map_dbl to run many models with varying value of k (centers)
# tot_withinss <- map_dbl(1:10, function(k){
# model <- kmeans(x = credit_clusters_scale, centers = k)
# model$tot.withinss
# })
# set.seed(1234)
# elbow_df <- data.frame(
# k = 1:10,
# tot_withinss = tot_withinss
# )
#
# elbow_plot = ggplot(elbow_df, aes(x = k, y = tot_withinss)) +
# geom_line() +
# labs(x = "Number of clusters", y ="Total within-cluster sum of squares",title = "Elbow plot") +
# scale_x_continuous(breaks = 1:10) + theme_linedraw() +
# theme(plot.title = element_text(size=14, hjust = 0.5, face="bold"))
# elbow_plot
set.seed(5684)
clusters <- kmeans(credit_clusters_scale, 3)
credit_clusters$Cluster <- as.factor(clusters$cluster)
credit_clusters_scale$Cluster <- as.factor(clusters$cluster)
# kable(table(credit_clusters$Cluster))%>%
# kable_styling(bootstrap_options=c("bordered", "responsive","striped"), full_width = FALSE)
После того как я разделили данные на кластеры, я создала оценочную таблицу с помощью пакета arsenal, в котором сразу выдаются все переменные по каждому кластеру с их распрделением внутри этих кластеров, что значительно упрощает анализ. Однако мне было необходимо выбрать одину из групп, где наблюдается наибольший отток клиентов и разбирать остальные две мне показалось не столь обязательным в рамках данного отчета. Ниже представлен график с распределением показателя оттока среди кластеров.
Как видно на графике, наибольший отток наблюдается среди клиентов первого кластера: 668 (42.5%) клиентов ушли из банка и 902 (57.5%) остались. Что интересно, эту группу людей можно назвать самой старой, так как здесь представлены люди в возрасте от 41 и 92 до, тогда как в остальных кластерах минимальный порог равен 18 годам. При этом в группе чуть больше женщин (51.3%), чем мужчин (48.7%), - это также отличительная особенность кластера, так как в двух других представлена обратная ситуация. Думаю, подобное распределение связано с тем, что среднестатистически мужчины живут меньше, чем женщины, поэтому вполне ожидаемо, что в самой “старой” группе будут представлено чуть больше женщин. Также, большинство клиентов записаны в данных как “активные” и составляют 73.7%, тогда как “неактивные” клиенты - 26.3%. Относительно количества используемых продуктов сложно что-то сказать, но большинство скорее использует/использовал один продукт банка.
Так как было необходимо проанализировать наиболее “проблемную” группу я отфильтровала данные и оставила только клиентов, которые попали в первый кластер. Я использовала разные варианты моделей, для того чтобы научиться предсказывать отток клиентов из банка. Каждая модель была изучена мною и проверена с помощью ряда показателей, в том числе и с помощью точности. В итоге из всех моделей лучшие результаты продемострировала модель, построенная с помощью алгоритма RandomForest. Точность модели на обучающей выборке составила 92%, а на тестовой - 80%. Такую разницу можно скорее списать на количество данных, так как в тестовой их достаточно мало, но все равно модель предсказывает достаточно неплохо. Precision равен 81%, что означает, что модель определила верно 81% ушедших клиентов. При этом показатели Recall значительно хуже - 0.69. Recall показывает, какую долю объектов положительного класса из всех объектов положительного класса нашел алгоритм. Таким образом, наш алгоритм нашел только 69% клиентов которые действительно ушли из общего числа ушебших клиентов. Думаю, такие показатели можно объяснить маленькой выборкой.
Важно изучить переменные, которые модель выделила как наиболее значимые для предсказания. Для этого ниже представлен график с упорядоченными по значимости переменными.
varImpPlot(model.rf)
Наиболее важными переменными оказались: IsActiveMember, Balance, CreditScore, Age, NumOfProducts, Country и Gender. В целом, переменные кажутся мне достаточно логичными. Основываясь на полученных данных я бы хотела предложить некоторые меры по предотвращению или уменьшению оттока клиентов банка.
Так как большая часть важных переменных (Пол, Возраст, Страна, Баланс, Кредитный рейтинг) не может быть изменена, я решила предложить политики, основанные на разведывательном и кластерном анализе, которые не могут проверены тестом, а также использовать переменные Активности и Количества продуктов, которыми пользуется клиент.
Политика №1: Данная политика основана на выводах разведывательного анализа и на результатах кластерного анализа. Как показывают данные, наибольший отток происходит среди людей в возрасте от 45 до 65. Поэтому, необходимо придумать различные маркетинговые акции, которые могли бы быть полезные клиентам этого возраста. Например, могут быть предложены дополнительные кешбэки в зависимости от возраста - чем старше, тем больше кешбек (45 лет - 4,5%, 46 лет - 4,6% и тд). Можно сделать просто повышенный фиксированный для всех возрастов кешбэк на покупки в магазинах.
Политика №2: Для уменьшения оттока клиентов необходимо повысить их активность. К сожалению, у меня нет данных и информации о том, каким образом клиента определяют как “активного” или “неактивного”. Могу предположить, что это делается исходя из количества операций за какой-то промежуток времени (неделя/месяц/год). Увеличить активность клиента можно также с помощью каких-то акций или выгодных для него предложений. Можно также попробовать сделать кэшбек на определенные категории товаров или предоставлять скидки в партнерские магазины/заведения. Следует изучить историю покупок клиента и предоставить скидки на интересные для него категории товаров/продуктов.Возможно стоит делать каждую неделю ограниченные по времени акции (на 3 дня), чтобы клиент обязательно восползовался ей в установленный срок.
Политика №3: Как показывают данные и модель, на отток клиентов оказывает влияние количество продуктов, которое они используют. Большинство клиентов использует только один продукт от банка. При этом наибольший отток наблюдается среди клиентов, которые используют три или четыре продукта, а наименьший отток среди тех, кто использует два продукта. Уменьшать количество продуктов, которыми пользуется клиент, достаточно странно, но можно было бы изучить чем конкретно они пользуются, что их не устраивает и может быть, предложить им другой сервис, который заменит им два уже у него имеющихся. В целом, с клиентами, которые используют один продукт попроще: им достаточно предложить пробную версию или бесплатное пользование еще одним продуктом в течение какого-то времени.
Как я писала ранее, проверить эффективность первой политики невозможно, так как она основана на переменной, на которую никак нельзя повлиять. Однако можно проверить эффективность двух других политик, что я и делаю далее.
Для проверки гипотезы об активности, я решила случайным образом отобрать из тестовой выборки 150 наблюдений (что чуть меньше половины от общего чсила наблюденйи в тестовой выборке). Перед этим я также создала колонку с id клиента, чтобы можно было потом верно все объединить без повторений и увеличения объемов тестовой выборки. Я заменила показатель активности, где был 0 на 1 в наборе данных из 150 наблюдений. В итоге, как показывает приведенный ниже график, подобная политика должна принести успех компании с точки зрения уменьшения оттока клиентов.
Для оценки третьей политики, касающейся количества используемых продуктов одним пользователем, я повторила предыдущие шаги, которые были проделаны для тестирования второй политики. Однако перед этим я проверила, какие вообще у меня есть варианты с точки зрения пользования сервисов в тестовой выборке. В итоге оказалось, что в тестовую вообще не попали те, у кого 4 сервиса. Поэтому будем работать с теми, у кого 1, 2 или 3 сервиса. До этого, при первоначальном анализе было выявлено, что наименьший отток среди тех, кто использует 2 сервиса. Так как предложить клиентам отключить один из сервисов не выглядит разумным, я решила рассмотреть ситуацию, когда мы наоборот подключаем клиента к нашему второму сервису. Я заменила в наборее со 100 наблюдениями значения 1 на 2, то есть предполагается, что клиенты стали пользоваться двумя продуктами банка (в дальнейшие действия компании необходимо включить изучение того, какие 2 сервсиса пользуются наибольшей популярностью). Как видно из полученных результатов, увеличение числа продуктов, которые испоьлзует клиент положительно сказалось на уменьшении оттока.
После анализа полученных данных, касательно оттока клиентов, мною были предложены три политики, две из которых удалось проверить уже сейчас. Во-первых, банку стоит уделить внимание клиентам в возрасте от 45 до 65 лет. Необходимо детально изучить, с чем конкретно может быть связан их уход, так как на данном этапе остается не ясно, что конкретно повлияло на их решение. Однако в качестве решения, я предлагала вынести на обсуждение внедрении специального кэшбека для этой категории клиентов. Во-вторых, следует разработать политику, направленную на увеличение активности клиентов. В рамках этого утверждения я предложила использование короткосрочных акций или скидок, на интересные для клиента категории товаров. В-третьих, оптимальным числом сервисов, при котором наблюдается наименьший отток оказалось два сервиса. Таким образом, необходимо предложить клиентам, которые используют только один сервис, пробную версию или бесплатное пользование еще одним продуктом в течение какого-то времени.